home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / obero / CyberIntrf.lha / CyberGraphics.mod next >
Encoding:
Text File  |  1995-03-05  |  15.0 KB  |  324 lines

  1. (*------------------------------------------
  2.  
  3.   :Module.      CyberGraphics.mod
  4.   :Author.      Albert Weinert  [awn]
  5.   :Address.     Adamsstr. 83 , 51063 Köln, Germany
  6.   :EMail.       a.weinert@darkness.gun.de
  7.   :Phone.       +49-221-613100
  8.   :Revision.    R.2
  9.   :Date.        05-Mar-1995
  10.   :Copyright.   (C) Copyright 1995 Albert Weinert
  11.   :Copyright.   Freeware
  12.   :Language.    Oberon-2
  13.   :Translator.  AmigaOberon V3.20
  14.   :Contents.    Oberon Interface for the "cybergraphics.library"
  15.   :Contents.      (C) Copyright 1994-1995 by Thomas Sontowski & Frank Mariak
  16.   :Contents.    The interface is for Oberon-A and for AmigaOberon
  17.   :Remarks.     Use it at you own risk
  18.   :Remarks.     When you find bugs in the interface, mail me the bugs, please.
  19.   :Usage.       Look at the Cybergraphics Autodocs
  20.   :History.     .1     [awn] 27-Feb-1995 : Erstellt
  21.   :History.     .2     [awn] 05-Mar-1995 : Added export markers to the library
  22.   :History.            procedures. Sorry, for that little error.
  23.  
  24. --------------------------------------------*)
  25.  
  26.  
  27. (* <*IF OberonA THEN*> $IF OberonA *)
  28.  
  29. (*
  30. <* STANDARD- *> <* INITIALISE- *> <* MAIN- *>
  31. <*$ CaseChk-  IndexChk- LongVars+ NilChk-  *>
  32. <*$ RangeChk- StackChk- TypeChk-  OvflChk- *>
  33. *)
  34.  
  35. (* <* ELSE *> $ELSE *)
  36.  
  37. (* $CaseChk-  $NilChk-  *)
  38. (* $RangeChk- $StackChk- $TypeChk-  $OvflChk- *)
  39.  
  40. (* <*END*> $END *)
  41.  
  42. MODULE CyberGraphics;
  43.  
  44. IMPORT
  45.   e := Exec,
  46.   u := Utility,
  47.   (* <*IF OberonA THEN*> $IF OberonA *)
  48.   Kernel,
  49.   y := SYSTEM,
  50.   (* <*END*> $END *)
  51.   g := Graphics;
  52.  
  53. CONST
  54.   libName    *= "cybergraphics.library";
  55.   libMinimum *= 40;
  56.   libVersion *= 40;
  57.  
  58. (*                                                              *)
  59. (*  Definition of CyberModeNode (Returned in AllocModeList)     *)
  60. (*                                                              *)
  61.  
  62. TYPE
  63.  
  64. (* <*IF OberonA THEN*> $IF OberonA *)
  65.   CyberModeNodePtr = POINTER [2] TO CyberModeNode;
  66.   CyberModeNode = RECORD [2] (e.NodeBase);
  67.                     node      -: e.Node;
  68. (* <* ELSE *> $ELSE *)
  69.   CyberModeNodePtr = UNTRACED POINTER TO CyberModeNode;
  70.   CyberModeNode = STRUCT( node-:e.Node );
  71. (* <*END*> $END *)
  72.                     modeText       -: ARRAY g.displayNameLen OF CHAR;
  73.                     displayID      -: LONGINT;
  74.                     width          -: INTEGER;
  75.                     height         -: INTEGER;
  76.                     depth          -: INTEGER;
  77.                     displayTagList -: u.TagListPtr;
  78.                   END;
  79.  
  80.                 
  81. (*                                      *)
  82. (* Parameters for GetCyberMapAttr       *)
  83. (*                                      *)
  84. CONST
  85.  
  86.   mAttrXMod         *= 080000001H;      (* function returns BytesPerRow if its called with this parameter *)
  87.   mAttrBPPix        *= 080000002H;      (* BytesPerPixel shall be returned *)
  88.   mAttrDispAdr      *= 080000003H;      (* do not use this ! private tag *)
  89.   mAttrPixFmt       *= 080000004H;      (* the pixel format is returned *)
  90.   mAttrWidth        *= 080000005H;      (* returns width in pixels *)
  91.   mAttrHeight       *= 080000006H;      (* returns height in lines *)
  92.   mAttrDepth        *= 080000007H;      (* returns bits per pixel *)
  93.   mAttrIsCyberGfx   *= 080000008H;      (* returns -1 if supplied bitmap is a cybergfx one *)
  94.  
  95. (*                               *)
  96. (* Parameters for GetCyberIDAttr *)
  97. (*                               *)
  98.  
  99.   idAttrPixFmt      *= 080000001H;      (* the pixel format is returned *)
  100.   idAttrWidth       *= 080000002H;      (* returns visible width in pixels *)
  101.   idAttrHeight      *= 080000003H;      (* returns visible height in lines *)
  102.   idAttrDepth       *= 080000004H;      (* returns bits per pixel *)
  103.   idAttrBPPix       *= 080000005H;      (* BytesPerPixel shall be returned *)
  104.  
  105. (*                           *)
  106. (* Tags for CyberModeRequest *)
  107. (*                           *)
  108.  
  109.   mReqTB            *= u.user+040000H;
  110.  
  111. (*            *)
  112. (* FilterTags *)
  113. (*            *)
  114.  
  115.   mReqMinDepth      *= mReqTB+0;           (* Minimum depth for displayed screenmode *)
  116.   mReqMaxDepth      *= mReqTB+1;           (* Maximum depth  "       "        " *)
  117.   mReqMinWidth      *= mReqTB+2;           (* Minumum width  "       "        " *)
  118.   mReqMaxWidth      *= mReqTB+3;           (* Maximum width  "       "        " *)
  119.   mReqMinHeight     *= mReqTB+4;           (* Minumum height "       "        " *)
  120.   mReqMaxHeight     *= mReqTB+5;           (* Minumum height "       "        " *)
  121.   mReqCModelArray   *= mReqTB+6;
  122.  
  123.   mReqWinTitle      *= mReqTB+20;
  124.   mReqOKText        *= mReqTB+21;
  125.   mReqCancelText    *= mReqTB+22;
  126.  
  127.   mReqScreen        *= mReqTB+30;          (* Screen you wish the Requester to open on *)
  128.  
  129. (*                          *)
  130. (* Tags for BestCyberModeID *)
  131. (*                          *)
  132.  
  133.   bidTB            *= u.user+050000H;
  134.  
  135. (* FilterTags *)
  136.  
  137.   bidDepth         *= bidTB+0;
  138.   bidNominalWidth  *= bidTB+1;
  139.   bidNominalHeight *= bidTB+2;
  140.   bidMonitorID     *= bidTB+3;
  141.  
  142.  
  143. (*                                   *)
  144. (* definition of divers pixelformats *)
  145. (*                                   *)
  146. CONST
  147.   pixFmtLUT8            *= 0 ;
  148.   pixFmtRGB15           *= 1 ;
  149.   pixFmtBGR15           *= 2 ;
  150.   pixFmtRGB15PC         *= 3 ;
  151.   pixFmtBGR15PC         *= 4 ;
  152.   pixFmtRGB16           *= 5 ;
  153.   pixFmtBGR16           *= 6 ;
  154.   pixFmtRGB16PC         *= 7 ;
  155.   pixFmtBGR16PC         *= 8 ;
  156.   pixFmtRGB24           *= 9 ;
  157.   pixFmtBGR24           *= 10;
  158.   pixFmtARGB32          *= 11;
  159.   pixFmtBGRA32          *= 12;
  160.   pixFmtRGBA32          *= 13;
  161.  
  162. (*                                                      *)
  163. (* SrcRectangle formats defines for xxxPixelArray calls *)
  164. (*                                                      *)
  165. CONST
  166.   rectFmtRGB            *= 0;
  167.   rectFmtRGBA           *= 1;
  168.   rectFmtARGB           *= 2;
  169.   rectFmtLUT8           *= 3;
  170.   rectFmtGREY8          *= 4;
  171.  
  172. VAR
  173.   base -: e.LibraryPtr;
  174.  
  175. (* <*IF OberonA THEN*> $IF OberonA *)
  176. PROCEDURE IsCyberModeID           *[base, - 54]( modeID[0]: LONGINT) : BOOLEAN;
  177. PROCEDURE BestCModeIDListTags     *[base, - 60]( tags[8].. : u.Tag ): LONGINT;
  178. PROCEDURE BestCModeIDListTagList  *[base, - 60]( tags[8]: u.TagListPtr ): LONGINT;
  179. PROCEDURE CModeRequestTags        *[base, - 66]( requester[8] : e.APTR;
  180.                                                 tags[9]..  : u.Tag ): LONGINT;
  181. PROCEDURE CModeRequestTagList     *[base, - 66]( requester[8] : e.APTR;
  182.                                                 tags[9] : u.TagListPtr ): LONGINT;
  183. PROCEDURE AllocCModeListTags      *[base, - 72]( tags[9]..  : u.Tag ): e.ListPtr;
  184. PROCEDURE AllocCModeListTagList   *[base, - 72]( tags[9] : u.TagListPtr ): e.ListPtr;
  185. PROCEDURE FreeCModeList           *[base, - 78]( modeList[8]: e.ListPtr );
  186. PROCEDURE ScalePixelArray         *[base, - 90]( srcRect[8]:e.APTR;
  187.                                                 srcW[0],srcH[1],srcMod[2]:INTEGER;
  188.                                                 rPort[9]:g.RastPortPtr;
  189.                                                 destX[3],destY[4],
  190.                                                 destW[5],destH[6]:INTEGER;
  191.                                                 srcFormat[7]:SHORTINT): LONGINT;
  192. PROCEDURE GetCyberMapAttr         *[base, - 96]( bitmap[8]:g.BitMapPtr;
  193.                                                 attrNr[0]:LONGINT): LONGINT;
  194. PROCEDURE GetCyberIDAttr          *[base, -102]( cyberIdAttr[0],
  195.                                                 cyberDisplayModeId[1]: LONGINT): LONGINT;
  196. PROCEDURE ReadRGBPixel            *[base, -108]( rPort[9]: g.RastPortPtr;
  197.                                                 x[0],y[1]:INTEGER ): LONGINT;
  198. PROCEDURE WriteRGBPixel           *[base, -114]( rPort[9]: g.RastPortPtr;
  199.                                                 x[0],y[1]:INTEGER;
  200.                                                 color[2]: LONGINT ): LONGINT;
  201. PROCEDURE ReadPixelArray          *[base, -120]( destRect[8]:e.APTR;
  202.                                                 destX[0],destY[1],destMod[2]:INTEGER;
  203.                                                 rPort[9] : g.RastPortPtr;
  204.                                                 srcX[3],srcY[4],
  205.                                                 sizeX[5],sizeY[6]:INTEGER;
  206.                                                 destFormat[7]:SHORTINT): LONGINT;
  207. PROCEDURE WritePixelArray         *[base, -126]( srcRect[8]:e.APTR;
  208.                                                 srcX[0],srcY[1],srcMod[2]:INTEGER;
  209.                                                 rPort[9] : g.RastPortPtr;
  210.                                                 destX[3],destY[4],
  211.                                                 sizeX[5],sizeY[6]:INTEGER;
  212.                                                 srcFormat[7]:SHORTINT): LONGINT;
  213. PROCEDURE MovePixelArray          *[base, -132]( srcX[0],srcY[1]:INTEGER;
  214.                                                 rPort[9]:g.RastPortPtr;
  215.                                                 destX[2],destY[3],
  216.                                                 sizeX[4],sizeY[5]:INTEGER): LONGINT;
  217. PROCEDURE SwapPixelArray          *[base, -138]( memRect[8]:e.APTR;
  218.                                                 memX[0],memY[1],memMod[2]:INTEGER;
  219.                                                 rPort[9] : g.RastPortPtr;
  220.                                                 rastX[3],rastY[4],
  221.                                                 sizeX[5],sizeY[6]:INTEGER;
  222.                                                 memFormat[7]:SHORTINT): LONGINT;
  223. PROCEDURE InvertPixelArray        *[base, -144]( rPort[9]: g.RastPortPtr;
  224.                                                 destX[0],destY[1],
  225.                                                 sizeX[2],sizeY[3]:INTEGER):LONGINT;
  226. PROCEDURE FillPixelArray          *[base, -150]( rPort[8] : g.RastPortPtr;
  227.                                                 destX[0],destY[1],
  228.                                                 sizeX[2],sizeY[3]:INTEGER;
  229.                                                 ARGB[4]:LONGINT): LONGINT;
  230. PROCEDURE DoCDrawMethodTags       *[base, -156]( hook [8] : u.HookPtr;
  231.                                                 rPort[9] : g.RastPortPtr;
  232.                                                 tags[10].. : u.Tag);
  233. PROCEDURE DoCDrawMethodTagList    *[base, -156]( hook [8] : u.HookPtr;
  234.                                                 rPort[9] : g.RastPortPtr;
  235.                                                 tags[10] : u.TagListPtr);
  236. (* <* ELSE *> $ELSE *)
  237. PROCEDURE IsCyberModeID           *{base, - 54}( modeID{0}: LONGINT) : BOOLEAN;
  238. PROCEDURE BestCModeIDListTags     *{base, - 60}( tags{8}.. : u.Tag ): LONGINT;
  239. PROCEDURE BestCModeIDListTagList  *{base, - 60}( tags{8}: u.TagListPtr ): LONGINT;
  240. PROCEDURE CModeRequestTags        *{base, - 66}( requester{8} : e.APTR;
  241.                                                 tags{9}..  : u.Tag ): LONGINT;
  242. PROCEDURE CModeRequestTagList     *{base, - 66}( requester{8} : e.APTR;
  243.                                                 tags{9} : u.TagListPtr ): LONGINT;
  244. PROCEDURE AllocCModeListTags      *{base, - 72}( tags{9}..  : u.Tag ): e.ListPtr;
  245. PROCEDURE AllocCModeListTagList   *{base, - 72}( tags{9} : u.TagListPtr ): e.ListPtr;
  246. PROCEDURE FreeCModeList           *{base, - 78}( modeList{8}: e.ListPtr );
  247. PROCEDURE ScalePixelArray         *{base, - 90}( srcRect{8}:e.APTR;
  248.                                                 srcW{0},srcH{1},srcMod{2}:INTEGER;
  249.                                                 rPort{9}:g.RastPortPtr;
  250.                                                 destX{3},destY{4},
  251.                                                 destW{5},destH{6}:INTEGER;
  252.                                                 srcFormat{7}:SHORTINT): LONGINT;
  253. PROCEDURE GetCyberMapAttr         *{base, - 96}( bitmap{8}:g.BitMapPtr;
  254.                                                 attrNr{0}:LONGINT): LONGINT;
  255. PROCEDURE GetCyberIDAttr          *{base, -102}( cyberIdAttr{0},
  256.                                                 cyberDisplayModeId{1}: LONGINT): LONGINT;
  257. PROCEDURE ReadRGBPixel            *{base, -108}( rPort{9}: g.RastPortPtr;
  258.                                                 x{0},y{1}:INTEGER ): LONGINT;
  259. PROCEDURE WriteRGBPixel           *{base, -114}( rPort{9}: g.RastPortPtr;
  260.                                                 x{0},y{1}:INTEGER;
  261.                                                 color{2}: LONGINT ): LONGINT;
  262. PROCEDURE ReadPixelArray          *{base, -120}( destRect{8}:e.APTR;
  263.                                                 destX{0},destY{1},destMod{2}:INTEGER;
  264.                                                 rPort{9} : g.RastPortPtr;
  265.                                                 srcX{3},srcY{4},
  266.                                                 sizeX{5},sizeY{6}:INTEGER;
  267.                                                 destFormat{7}:SHORTINT): LONGINT;
  268. PROCEDURE WritePixelArray         *{base, -126}( srcRect{8}:e.APTR;
  269.                                                 srcX{0},srcX{1},srcMod{2}:INTEGER;
  270.                                                 rPort{9} : g.RastPortPtr;
  271.                                                 destX{3},destY{4},
  272.                                                 sizeX{5},sizeY{6}:INTEGER;
  273.                                                 srcFormat{7}:SHORTINT): LONGINT;
  274. PROCEDURE MovePixelArray          *{base, -132}( srcX{0},srcY{1}:INTEGER;
  275.                                                 rPort{9}:g.RastPortPtr;
  276.                                                 destX{2},destY{3},
  277.                                                 sizeX{4},sizeY{5}:INTEGER): LONGINT;
  278. PROCEDURE SwapPixelArray          *{base, -138}( memRect{8}:e.APTR;
  279.                                                 memX{0},memY{1},memMod{2}:INTEGER;
  280.                                                 rPort{9} : g.RastPortPtr;
  281.                                                 rastX{3},rastY{4},
  282.                                                 sizeX{5},sizeY{6}:INTEGER;
  283.                                                 memFormat{7}:SHORTINT): LONGINT;
  284. PROCEDURE InvertPixelArray        *{base, -144}( rPort{9}: g.RastPortPtr;
  285.                                                 destX{0},destY{1},
  286.                                                 sizeX{2},sizeY{3}:INTEGER):LONGINT;
  287. PROCEDURE FillPixelArray          *{base, -150}( rPort{8} : g.RastPortPtr;
  288.                                                 destX{0},destY{1},
  289.                                                 sizeX{2},sizeY{3}:INTEGER;
  290.                                                 ARGB{4}:LONGINT): LONGINT;
  291. PROCEDURE DoCDrawMethodTags       *{base, -156}( hook {8} : u.HookPtr;
  292.                                                 rPort{9} : g.RastPortPtr;
  293.                                                 tags{10}.. : u.Tag);
  294. PROCEDURE DoCDrawMethodTagList    *{base, -156}( hook {8} : u.HookPtr;
  295.                                                 rPort{9} : g.RastPortPtr;
  296.                                                 tags{10} : u.TagListPtr);
  297. (* <*END*> $END *)
  298.  
  299. (* <*IF OberonA THEN*> $IF OberonA *)
  300.  
  301. (* <*$LongVars-*> *)
  302.  
  303. PROCEDURE* CloseLib (VAR rc : LONGINT);
  304.  
  305. BEGIN (* CloseLib *)
  306.   IF base # NIL THEN e.CloseLibrary (base) END;
  307. END CloseLib;
  308.  
  309. BEGIN (* Dos *)
  310.   base := e.OpenLibrary (libName, libMinimum);
  311.   Kernel.SetCleanup (CloseLib)
  312.  
  313. (* <* ELSE *> $ELSE *)
  314.  
  315. BEGIN
  316.   base :=  e.OpenLibrary(libName, libMinimum);
  317.  
  318. CLOSE
  319.   IF base#NIL THEN e.CloseLibrary(base) END;
  320.  
  321. (* <*END*> $END *)
  322.  
  323. END CyberGraphics.
  324.